﻿using OConf.Model;
using OConf.Model.Common;
using OConf.Model.RequestInput.Users;
using System.Collections.Generic;

namespace OConf.IBLL
{
    public interface IAdminBLL
    {
        /// <summary>
        /// 获取管理员详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        ReturnData<UserDetailModel> GetUserDetail(string id);

        /// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> RegisterUser(RegisterUserInput input);

        /// <summary>
        /// 账号登录
        /// </summary>
        /// <param name="userAccount"></param>
        /// <param name="userPwd"></param>
        /// <returns></returns>
        ReturnData<UserLoginResponse> UserLogin(string userAccount, string userPwd);

        /// <summary>
        /// 用户修改密码
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> ModifyUserPassWord(EditPersionalPwdInput input);

        /// <summary>
        /// 用户个人中心修改个人信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> ModifyUserSelfInfo(EditPersionalInfoInput input);

        /// <summary>
        /// 用户个人中心获取用户信息
        /// </summary>
        /// <returns></returns>
        ReturnData<UserPersonalCenterModel> GetPersonalInfo();

        /// <summary>
        /// 管理后台用户分页查询
        /// </summary>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        ReturnData<ReturnTableData<UsersModel>> QueryPage(QueryUserInput queryParam);

        /// <summary>
        /// 获取用户角色下拉列表
        /// </summary>
        /// <returns></returns>
        ReturnData<List<DropDownListModel<int>>> GetRoleTypeDropDownList();

        /// <summary>
        /// 修改管理员状态
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> ModifyUserEnable(ModifyUserEnableInput input);

        /// <summary>
        /// 修改管理员信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> EditUser(EditUserInput input);

        /// <summary>
        /// 删除管理员信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> DeleteUser(DeleteUserInput input);

        /// <summary>
        /// 获取管理后台菜单信息
        /// </summary>
        /// <returns></returns>
        ReturnData<List<AdminBetterRouterModel>> GetAdminBetterManageMenu();
    }
}
